home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Util / B / Benchmark folder / Source Files / TBenchMarkDocument.cp < prev    next >
Encoding:
Text File  |  1993-04-19  |  5.8 KB  |  253 lines  |  [TEXT/MPS ]

  1. // Copyright © 1992-1993 Emergent Behavior. All rights reserved.
  2.  
  3. //=================================================================
  4. #ifndef _TBENCHMARKDOCUMENT_
  5.     #include "TBenchMarkDocument.h"
  6. #endif
  7.  
  8. #ifndef _TBENCHMARKVIEW_
  9.     #include "TBenchMarkView.h"
  10. #endif
  11.  
  12. const long  kCommandThreeResult = (kCommandsMenuID<<16) + 3;
  13.  
  14. //=================================================================
  15. TBenchMarkDocument::TBenchMarkDocument()
  16.     : TDocument(), 
  17.     fHardwareTested(FALSE)
  18. {
  19.  
  20. }
  21.  
  22. //-----------------------------------------------------------------
  23. TBenchMarkDocument::TBenchMarkDocument(const TBenchMarkDocument& source)
  24.     : TDocument(source)
  25. {
  26.     
  27. }
  28.  
  29. //-----------------------------------------------------------------
  30. MQACollectible*
  31. TBenchMarkDocument::Clone() const
  32. {
  33.     return (TDocument*)new TBenchMarkDocument(*this);
  34. }
  35.  
  36. //-----------------------------------------------------------------
  37. TBenchMarkDocument::~TBenchMarkDocument()
  38. {
  39.  
  40. }
  41.  
  42. //-----------------------------------------------------------------
  43. TView*
  44. TBenchMarkDocument::DoCreateViews()
  45. {
  46.     const Point kViewSize = {294, 352};
  47.     return new TBenchMarkView(kViewSize, this);
  48. }
  49.  
  50. //-----------------------------------------------------------------
  51. void
  52. TBenchMarkDocument::DoSetupMenus(TMenuBar& theMenuBar)
  53. {
  54.     theMenuBar.Enable(kCommandOneResult);
  55.     TDocument::DoSetupMenus(theMenuBar);
  56. }
  57.  
  58. //-----------------------------------------------------------------
  59. void
  60. TBenchMarkDocument::DoMenuCommand(long menuResult)
  61. {
  62.     switch (menuResult) {
  63.         
  64.     case kCommandOneResult:
  65.         TBenchMarkView* view = (TBenchMarkView*)this->fWindow->GetView();
  66.         view->DisplayWaitPict();
  67.         this->TestHardware();
  68.         fAdditionTime        = TBenchMarker::TestAdditionSpeed();
  69.         fDivisionTime         = TBenchMarker::TestDivisionSpeed();
  70.         fRandomNumberTime     = TBenchMarker::TestRandomNumberSpeed();
  71.         fCompositeScore        = this->ComputeCompositeScore();
  72.         this->fWindow->GetView()->InvalidateAll();
  73.         this->SetDataSaved(FALSE);
  74.         break;
  75.         
  76.     default:
  77.         TDocument::DoMenuCommand(menuResult);
  78.         }    // switch
  79. }
  80. //-----------------------------------------------------------------
  81. Score
  82. TBenchMarkDocument::ComputeCompositeScore()
  83. {
  84.     Score addScore     = kMacPlusAddTime / (float)this->GetAdditionSpeed();
  85.     Score divScore     = kMacPlusDivideTime / (float)this->GetDivisionSpeed();
  86.     Score randScore    = kMacPlusRandTime / (float)this->GetRandomNumberSpeed();
  87.     Score score        = (addScore+divScore+randScore) / (float)3;
  88.     return score;
  89. }
  90.  
  91. //-----------------------------------------------------------------
  92. Boolean
  93. TBenchMarkDocument::HasMathChip()
  94. {
  95.     return fHasMathChip;
  96. }
  97.  
  98. //-----------------------------------------------------------------
  99. Boolean
  100. TBenchMarkDocument::Has32BitQD()
  101. {
  102.     return fHas32BitQD;
  103.  
  104. }
  105.  
  106. //-----------------------------------------------------------------
  107. Boolean
  108. TBenchMarkDocument::UsingSystem7()
  109. {
  110.     return fUsingSystem7;
  111. }
  112.  
  113. //-----------------------------------------------------------------
  114. Boolean
  115. TBenchMarkDocument::HasColorQD()
  116. {
  117.     return fHasColorQD;
  118. }
  119.  
  120. //-----------------------------------------------------------------
  121. Time
  122. TBenchMarkDocument::GetAdditionSpeed()
  123. {
  124.     return fAdditionTime;
  125. }
  126.  
  127. //-----------------------------------------------------------------
  128. Time
  129. TBenchMarkDocument::GetDivisionSpeed()
  130. {
  131.     return fDivisionTime;
  132. }
  133.  
  134. //-----------------------------------------------------------------
  135. Time
  136. TBenchMarkDocument::GetRandomNumberSpeed()
  137. {
  138.     return fRandomNumberTime;
  139. }
  140.  
  141. //-----------------------------------------------------------------
  142. Score
  143. TBenchMarkDocument::GetCompositeScore()
  144. {
  145.     return fCompositeScore;
  146. }
  147.  
  148. //-----------------------------------------------------------------
  149. Boolean
  150. TBenchMarkDocument::HardwareTested()
  151. {
  152.     return fHardwareTested;
  153. }
  154.  
  155. //-----------------------------------------------------------------
  156. void
  157. TBenchMarkDocument::TestHardware()
  158. {
  159.     if ( TComputer::HasMathChip() )
  160.         fHasMathChip = TRUE;
  161.     else
  162.         fHasMathChip = FALSE;
  163.         
  164.     if ( TComputer::HasQuickDraw32() )
  165.         fHas32BitQD = TRUE;
  166.     else
  167.         fHas32BitQD = FALSE;
  168.         
  169.     if ( TComputer::HasSystem7() )
  170.         fUsingSystem7 = TRUE;
  171.     else
  172.         fUsingSystem7 = FALSE;
  173.         
  174.     if ( TComputer::HasColorQuickDraw() )
  175.         fHasColorQD = TRUE;
  176.     else
  177.         fHasColorQD = FALSE;
  178.     
  179.     fHardwareTested = TRUE;
  180.  
  181. }
  182.  
  183. //-----------------------------------------------------------------
  184. void
  185. TBenchMarkDocument::DoWrite(TFile& aFile)
  186. {
  187.     long dataBytes;
  188.     
  189.     dataBytes = sizeof(fHardwareTested);
  190.     aFile.WriteData(dataBytes, &fHardwareTested);
  191.     
  192.     dataBytes = sizeof(fHasMathChip);
  193.     aFile.WriteData(dataBytes, &fHasMathChip);
  194.  
  195.     dataBytes = sizeof(fHas32BitQD);
  196.     aFile.WriteData(dataBytes, &fHas32BitQD);
  197.  
  198.     dataBytes = sizeof(fUsingSystem7);
  199.     aFile.WriteData(dataBytes, &fUsingSystem7);
  200.  
  201.     dataBytes = sizeof(fHasColorQD);
  202.     aFile.WriteData(dataBytes, &fHasColorQD);
  203.     
  204.     dataBytes = sizeof(fAdditionTime);
  205.     aFile.WriteData(dataBytes, &fAdditionTime);
  206.  
  207.     dataBytes = sizeof(fDivisionTime);
  208.     aFile.WriteData(dataBytes, &fDivisionTime);
  209.  
  210.     dataBytes = sizeof(fRandomNumberTime);
  211.     aFile.WriteData(dataBytes, &fRandomNumberTime);
  212.  
  213.     dataBytes = sizeof(fCompositeScore);
  214.     aFile.WriteData(dataBytes, &fCompositeScore);
  215.  
  216. }
  217.  
  218. //-----------------------------------------------------------------
  219. void
  220. TBenchMarkDocument::DoRead(TFile& aFile)
  221. {
  222.     long dataBytes;
  223.     
  224.     dataBytes = sizeof(fHardwareTested);
  225.     aFile.ReadData(dataBytes, &fHardwareTested);
  226.  
  227.     dataBytes = sizeof(fHasMathChip);
  228.     aFile.ReadData(dataBytes, &fHasMathChip);
  229.  
  230.     dataBytes = sizeof(fHas32BitQD);
  231.     aFile.ReadData(dataBytes, &fHas32BitQD);
  232.  
  233.     dataBytes = sizeof(fUsingSystem7);
  234.     aFile.ReadData(dataBytes, &fUsingSystem7);
  235.  
  236.     dataBytes = sizeof(fHasColorQD);
  237.     aFile.ReadData(dataBytes, &fHasColorQD);
  238.     
  239.     dataBytes = sizeof(fAdditionTime);
  240.     aFile.ReadData(dataBytes, &fAdditionTime);
  241.  
  242.     dataBytes = sizeof(fDivisionTime);
  243.     aFile.ReadData(dataBytes, &fDivisionTime);
  244.     
  245.     dataBytes = sizeof(fRandomNumberTime);
  246.     aFile.ReadData(dataBytes, &fRandomNumberTime);
  247.     
  248.     dataBytes = sizeof(fCompositeScore);
  249.     aFile.ReadData(dataBytes, &fCompositeScore);
  250.  
  251. }
  252.  
  253.